// src/utils/markdown-helper.ts
export function convertCodeToMarkdown(code: string, language: string = ''): string {
    return `\`\`\`${language}\n${code}\n\`\`\``;
}
  
export function parseSSEData(rawData: string): { content: string; isDone: boolean } {
    try {
      // 分离事件和数据
      const lines = rawData.split('\n');
      let event = '';
      let jsonData = '';
      
      for (const line of lines) {
        if (line.startsWith('id:')) {
          continue;
        } else if (line.startsWith('event:')) {
          event = line.slice(7).trim();
        } else if (line.startsWith('data:')) {
          jsonData = line.slice(5).trim();
        }
      }
  
      // 如果是 Done 事件，返回结束标记
      if (event === 'Done') {
        return { content: '', isDone: true };
      }
  
      // 只处理 Message 事件
      if (event === 'Message' && jsonData) {
        try {
          // 第一层解析：解析 SSE data
          const sseData = JSON.parse(jsonData);
          
          // 检查并处理 content 字段
          if (typeof sseData.content === 'string') {
            // 第二层解析：解析 content 字段
            const content = JSON.parse(sseData.content);
            
            if (content.output) {
              // 处理输出内容
              // 使用正则替换处理转义字符
              const cleanOutput = content.output
                .replace(/\\n/g, '\n')  // 处理换行
                .replace(/\\"/g, '"')   // 处理引号
                .replace(/\\t/g, '\t')  // 处理制表符
                .replace(/\\\\/g, '\\'); // 处理反斜杠
              
              // 将代码转换为 Markdown 格式
              const markdownContent = `
  ${convertCodeToMarkdown(cleanOutput, 'vue')}
  `;
              
              return { content: markdownContent, isDone: false };
            }
          }
        } catch (innerError) {
          console.error('内层解析失败:', innerError);
          return { content: '', isDone: false };
        }
      }
      
      return { content: '', isDone: false };
    } catch (error) {
      console.error('外层解析失败:', error, '\n原始数据:', rawData);
      return { content: '', isDone: false };
    }
  }
